$(document).ready(function () {
	Number.prototype.formatMoney = function(pc, pd, pt) {
		var n = this, 
		    c = isNaN(c = Math.abs(pc)) ? 2 : pc, 
		    d = pd == undefined ? "," : pd, 
		    t = pt == undefined ? "." : pt, 
		    s = n < 0 ? "-" : "", 
		    i = parseInt(n = Math.abs(+n || 0).toFixed(c)) + "", 
		    j = (j = i.length) > 3 ? j % 3 : 0;
		   return s + (j ? i.substr(0, j) + t : "") + i.substr(j).replace(/(\d{3})(?=\d)/g, "$1" + t) + (c ? d + Math.abs(n - i).toFixed(c).slice(2) : "");
	};
		 
	try {
		$.fx.speeds._default = 700;
		
		$('#boxMensagem').hide();
		$('#boxMensagem').click(limparMensagem);
				
	    carregarScript("js/login.js", "mostrarLogin");
	} catch (e) {
		mostrarMensagem(e.message, 'e');
	}
});

function getJTableMessages() {
	var jTableMessages = {
			serverCommunicationError: 'Erro na comunicação com o servidor.',
		    loadingMessage: 'Carregando informações...',
		    noDataAvailable: 'Nenhum registro',
		    addNewRecord: 'Novo',
		    editRecord: 'Editar',
		    areYouSure: 'Você tem certeza?',
		    deleteConfirmation: 'Confirma a exclusão?',
		    save: 'Salvar',
		    saving: 'Savando',
		    cancel: 'Cancelar',
		    deleteText: 'Excluir',
		    deleting: 'Excluindo',
		    error: 'Erro',
		    close: 'Fechar',
		    cannotLoadOptionsFor: 'Não foi possível definir opções para o campo {0}',
		    pagingInfo: 'Exibindo {0}-{1} de {2}',
		    pageSizeChangeLabel: 'Linhas',
		    gotoPageLabel: 'Ir p/ pág',
		    canNotDeletedRecords: 'Não foi possível excluir {0} de {1} registros!',
		    deleteProggress: 'Excluindo {0} de {1} registros, aguarde...'
		};
	return jTableMessages;
}

function carregarScript(url, aoCarregar) {
	limparMensagem();
	$.ajax({
		url: url,
		dataType: "script",
		async: false,
		success: function() {
			if ((aoCarregar != null) && (window[aoCarregar] != undefined)) {
				var fnct = window[aoCarregar];
				fnct();
			} else {
				mostrarMensagem("Método indefinido: " + aoCarregar, 'e');
			}
		},
		error: function (jq, status, erro) {
			mostrarMensagem($('<p>').append("Erro ao tentar carregar " + url + ": " + status, erro), 'e');
		}
	});
}

function mostrarMensagem(texto, tipo) {
	switch(tipo) {
		case 'm':$('#boxMensagem').attr('class', 'ui-state-highlight');break;
		case 'e':$('#boxMensagem').attr('class', 'ui-state-error');break;
		default: $('#boxMensagem').removeClass();
	}
	$('#boxMensagem').html(texto);
	$('#boxMensagem').show();
}

function limparMensagem() {
	$('#boxMensagem').html('');
	$('#boxMensagem').removeClass();
	$('#boxMensagem').hide();
}

function sendForm(form, ready) {
	limparMensagem();
	$.post("post.php",
		$(form).serialize(), 
		function(data){
			try {
				if ((ready != undefined) && (ready != null)) {
					ready(jQuery.parseJSON(data));
				}
			} catch (e) {
				mostrarMensagem($('<p>').append(e.message, data), 'e');
			}
	    }
    );
}

function exec(params, ready) {
	limparMensagem();
	var formData = "";
	var cola = "";
	for(var ind in params) {
		formData = formData + cola + params[ind].nome + "=" + params[ind].valor;
		cola = "&";
	}

	$.post("post.php", 
    		formData,
    		function(data){
    			try {
					if ((ready != undefined) && (ready != null)) {
						ready(jQuery.parseJSON(data));
					}
    			} catch (e) {
    				mostrarMensagem($('<p>').append(e.message, data), 'e');
    			}
    			
    		}
    );
}

function manter(pCampos, pChave, pClasse, pFiltro, pDestino) {
	limparMensagem();
	$(pDestino).load("html/manter.html #pnlMntr", function() {
		// campos de filtro
		var pnlFiltro = $('<div>');
		var cbb = $('<select>').attr({id: 'cbbCampo', name: 'cbbCampo'});
		var ipt = $('<input>').attr({type : "text", name: 'edtFiltro', id: 'edtFiltro'});
		var item = null;
		
		for (var opt in pFiltro) {
			item = $('<option>').attr({
					value: pFiltro[opt].campo,
					
				}).append(pFiltro[opt].titulo);

			if (pFiltro[opt].selecionado) {
				$(item).attr({selected: "selected"});
			}

			$(cbb).append(item);
		}
		$(pnlFiltro).append(cbb, " ", ipt);
		// fim campos de filtro

		$('#grdDataset').jtable({
		    messages: getJTableMessages(),
			title: '&nbsp;',
			paging: true,
			selecting: true,
			multiselect: true,
			actions: {
	                listAction: 'post.php?action=' + pClasse + '.consultar',
	                createAction: 'post.php?action=' + pClasse + '.inserir',
	                updateAction: 'post.php?action=' + pClasse + '.alterar',
	                deleteAction: 'post.php?action=' + pClasse + '.excluir'
			},
		        fields: pCampos,
		        sorting: true,
		        toolbar: {
				hoverAnimation: true,
				items: [{text:  $(pnlFiltro)},
					{text: 'Filtrar',
					click: carregarDadosGrid},
					{text: 'Excluir selecionados',
					 click: excluirSelecionados,
					 icon: 'css/themes/lightcolor/delete.png'
					}]
			},
		    defaultSorting: pChave
		});
		
		// carregar dados
	    carregarDadosGrid();
		
		$('#grdDataset').show();
	    $('#pnlMntr').draggable();
	});
}

function excluirSelecionados() {
	var regs = $('#grdDataset').jtable('selectedRows');
	$('#grdDataset').jtable('deleteRows', regs);
}

function carregarDadosGrid() {
	$('#grdDataset').jtable('load', {
		campo: $('#cbbCampo').val(),
		valor: $('#edtFiltro').val()
	});
}

function montarArvore(obj, params, cfg) {
	exec(params, function(dados) {
		$(obj).addClass("ztree");
		$.fn.zTree.init(obj, cfg, dados.Records);
	});
}

function marcarDependencias(tree, campo, valor) {
	var params = [{
					nome: "action",
					valor: "rec_er.consultar"
				},
				{
					nome: "ente",
					valor: valor
				}];
			
	exec(params, function(dados) {
		var treeObj = $.fn.zTree.getZTreeObj(tree);
		var req = null;
		for(var i in dados.Records) {
			req = treeObj.getNodeByParam(campo, dados.Records[i].ido);
			treeObj.checkNode(req, true, false);
			treeObj.selectNode(req, true);
			marcarDependencias(tree, campo, dados.Records[i].ido);
		}
	});
}

function habilitarAlterarSenha() {
	if (($('#edtNovaSenha').val() != "") && ($('#edtNovaSenha').val() == $('#edtConfSenha').val())) {
		$('#btnAlterarSenha').removeAttr("disabled");
		$('#btnAlterarSenha').focus();
	} else {
		$('#btnAlterarSenha').attr("disabled", "disabled");
	}
}

function home() {
	$('#content').load("html/home.html #pnlHome", function() {
		$('#pnlCfgCaption').html($('#lblUsuario').html());
		$('#lblNomeUsuario').html($('#lblUsuario').html());

		// usuário
		$('#btnAlterarSenha').attr("disabled", "disabled");
		if ($('#senha_temp').val() == 1) {
			$('#edtSenhaAtual').attr({disabled: "disabled", 
									  placeholder: "Login com senha temporária"});
			
		}
		
		$('#btnAlterarSenha').click(function(e){
			e.preventDefault();
			params = [{
						nome: "action",
						valor: "usuario.alterarsenha"
					}, {
						nome: "senhaatual",
						valor: $('#edtSenhaAtual').val()
					}, {
						nome: "novasenha",
						valor: $('#edtNovaSenha').val()
					}];
			exec(params, function(dados) {
				mostrarMensagem(dados.Message, (dados.Result == "OK") ? "m" : "e");
				if (dados.Result == "OK") {
					$('#edtSenhaAtual').val("");
					$('#edtNovaSenha').val("");
					$('#edtConfSenha').val("");
					habilitarAlterarSenha();
				}
			});
		});
		
		$('#edtNovaSenha').change(habilitarAlterarSenha);
		$('#edtConfSenha').change(habilitarAlterarSenha);

		// configurações
		mostrarConfig();
		$('#tabs').tabs();
	});
}

function mostrarConfig() {
	params = [{
		nome: "action",
		valor: "usuario.consultarConfig"
	}];
	exec(params, function(dados) {
		for(key in dados.Records) {
			switch (dados.Records[key].parametro) {
			case 'carencia':
				$("#edtCarencia").val(dados.Records[key].valor);
				break;
			case 'periodo':
				$("#edtPeriodo").val(dados.Records[key].valor);
				break;
			case 'valormanut':
				$("#edtVrManut").val(dados.Records[key].valor);
				break;
			case 'tx_sepult':
				$("#edtTxSepult").val(dados.Records[key].valor);
				break;
			case 'tx_transf':
				$("#edtTxTransf").val(dados.Records[key].valor);
				break;
			case 'tx_exuma':
				$("#edtTxExuma").val(dados.Records[key].valor);
				break;
			case 'receitas':
				$("#edtReceitas").val(dados.Records[key].valor);
				break;
			case 'ossuario':
				$("#edtOssuario").val(dados.Records[key].valor);
				break;
			}
		}
		$('#btnSalvarConfig').click(function() {
			sendForm("#frmConfig", function(dados) {
				if (dados.Result == "OK") {
					mostrarMensagem(dados.Message, "m");
				} else {
					mostrarMensagem(dados.Message, "e");
				}
			});
		});
	});
}
